如何使用MATLAB工具箱的fmincon优化函数

您所在的位置:网站首页 matlab diff函数 如何使用MATLAB工具箱的fmincon优化函数

如何使用MATLAB工具箱的fmincon优化函数

#如何使用MATLAB工具箱的fmincon优化函数| 来源: 网络整理| 查看: 265

1. fmincon函数简介

fmincon是MATLAB自带的优化工具箱中一个常用的优化函数, 广泛用于优化各类实数域的函数. fmincon作为MATLAB自带的一个非线性规划求解器, 非常好用, 其模型如下:

b 和 beq 是向量,A 和 Aeq 是矩阵,c(x) 和 ceq(x) 是返回向量的函数,f(x) 是返回标量的函数。f(x)、c(x) 和 ceq(x) 可以是非线性函数。x、lb 和 ub 可以作为向量或矩阵传递。

2. 调用MATLAB工具箱的fmincon优化函数优化cigar函数

 下面我们给出完整的代码, 在进行讲解

clc;clear all;close all;warning off;%

global N; N=2;% 函数维数

%% 绘制三维图 xmat=-5:0.1:5; ymat=-5:0.1:5; [X,Y] = meshgrid(xmat,ymat); [n1,n2]=size(X); Z=zeros(n1,n2); for i=1:n1     for j=1:n2         Z(i,j)=cigar([X(i,j),Y(i,j)]);     end end

% 绘图 figure; surf(X,Y,Z); xlabel('x','fontname','宋体'); ylabel('y','fontname','宋体'); zlabel('z','fontname','宋体'); rotate3d on;% 开启旋转 % view(az,el);% 视角设定 title(['三维图'],'fontname','宋体');

x0=5*ones(1,N);% 初值 

%% 模型参数设置 A=[]; b=[]; Aeq=[]; beq=[]; lb=-5*ones(1,N); ub=5*ones(1,N);

%% 优化参数设置 options=optimset('MaxIter',50,'MaxFunEvals',1000);%设置迭代次数 options=optimset(options,'Display','on');% 显示过程

[x,fval,exitflag,output] = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@nocon,options); % 调用fmincon进行优化 disp('输出自变量'); x disp('输出优化的目标函数值'); fval

程序运行结果如下:

输出自变量

x =

      0.000378347904689903      5.72704992995286e-06

输出优化的目标函数值

fval =

      4.71138145984971e-07

>> 

3.程序讲解

(1)首先是利用雪茄函数进行三维函数图像的绘制;

(2) 以下部分为设置fmincon的参数

x0=5*ones(1,N);% 初值 

%% 模型参数设置 A=[]; b=[]; Aeq=[]; beq=[]; lb=-5*ones(1,N); ub=5*ones(1,N);

(3)调用fmincon函数和输出结果

%% 优化参数设置 options=optimset('MaxIter',50,'MaxFunEvals',1000);%设置迭代次数 options=optimset(options,'Display','on');% 显示过程

[x,fval,exitflag,output] = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@nocon,options); % 调用fmincon进行优化

有需要讨论可以加QQ1579325979  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3